---@diagnostic disable: lowercase-global, undefined-global, trailing-space

-- 为pono角色添加潜水组件
AddPrefabPostInit("pono", function(inst)
    if not TheWorld.ismastersim then
        return inst
    end
    
    -- 添加潜水组件
    if not inst.components.mod_pono_diving then
        inst:AddComponent("mod_pono_diving")
    end
    
    -- 添加角色标签用于识别
    inst:AddTag("pono")
    
    -- Hook CollectSceneActions 来阻止潜水时对其他物体的交互
    local old_CollectSceneActions = inst.CollectSceneActions
    inst.CollectSceneActions = function(self, doer, actions, right, ...)
        -- 如果在潜水忙碌状态（2秒内），不允许任何交互
        if self:HasTag("pono_diving_busy") then
            return
        end
        
        -- 如果在潜水中但可以跃出（2秒后），完全阻止交互，不调用原函数
        if self:HasTag("pono_in_pond") and self:HasTag("pono_can_dive_out") then
            -- 不调用原函数，不收集任何动作
            -- ComponentAction 会自动添加池塘的跃出动作
            return
        end
        
        -- 否则正常收集动作
        if old_CollectSceneActions then
            return old_CollectSceneActions(self, doer, actions, right, ...)
        end
    end
    
    -- Hook talker 组件来阻止潜水时的台词触发
    if inst.components.talker then
        local old_Say = inst.components.talker.Say
        inst.components.talker.Say = function(self, script, ...)
            -- 如果在潜水中，不说话
            if inst:HasTag("pono_in_pond") or inst:HasTag("pono_is_diving") then
                return
            end
            -- 否则正常说话
            return old_Say(self, script, ...)
        end
    end
end)
